package com.cskaoyan._10exception._06customexception;

/**
 * @author Macro_Ray
 * @since 2024/3/19 15:13
 */
// 自定义异常的使用
    // 自定义异常类，继承Exception类，是编译异常，自己必须处理
    // 自定义异常类，继承RuntimeException类，是运行时异常
public class Demo1 {
    public static void main(String[] args) throws ScoreExceedRangeException {
        student student = new student("zs", 110);
        checkStudentScoreRange(student);
    }

    public static void checkStudentScoreRange(student s) throws ScoreExceedRangeException {
        if(s == null){
            throw new NullPointerException("学生对象不能为空");
        }

        int score = s.getScore();
        if(score < 0 || score > 100){

            throw new ScoreExceedRangeException("分数超出范围，必须在0-100之间");
        }
    }
}

class student {
    String name;
    int score;

    public student(String name, int score) {
        this.name = name;
        this.score = score;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getScore() {
        return score;
    }

    public void setScore(int score) {
        this.score = score;
    }
}

// 自定义异常，分两步：
// 第一步：定义异常类
//      1. 继承Exception的类，是编译异常，自己必须处理
//      2. 继承RuntimeException的类，是运行时异常
// 第二步：在需要抛出该异常的地方，抛出该异常对象
class ScoreExceedRangeException extends Exception {
    public ScoreExceedRangeException(){

    }

    public ScoreExceedRangeException(String message) {
        super(message);
    }

}
